package br.com.loja.venda;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

import br.com.loja.cliente.Cliente;
import br.com.loja.produto.Produto;

@Entity
@Table(name="venda")
public class Venda implements Comparable<Venda>, Serializable{
	
	@Id
	@Column(name="id")
	@GeneratedValue(strategy = GenerationType.SEQUENCE)  
	private Integer id;
	
	@ManyToMany
	@JoinColumn(name="Cod_Cliente", nullable =false)
	private Cliente cliente;
	

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "venda_produto",
		joinColumns = {@JoinColumn (name="id_venda")}, inverseJoinColumns = {@JoinColumn(name="id_produto")})
	private List<Produto> produtos;
	
	@Column(name="data_venda")
	private Date dataVenda;
		
	public Venda(Integer id, Cliente cliente, Collection<Produto> produtos,	Date dataVenda) {
		this.id = id;
		this.cliente = cliente;
		this.produtos = (List<Produto>) produtos;
		this.dataVenda = dataVenda;
	}

	public Venda(){}
	
	
	public Collection<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(Collection<Produto> produtos) {
		this.produtos = (List<Produto>) produtos;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	public Date getDataVenda() {
		return dataVenda;
	}

	public void setDataVenda(Date dataVenda) {
		this.dataVenda = dataVenda;
	}

	
	public int compareTo(Venda a) {
		if(id > a.getId())
			return -1;
		else if(id < a.getId())
			return 1;
		
		return 0;

	}
	
	

}
